www.gusucode.com > 精通MATLAB最优化计算全书代码 程序源码 > 随书源码_精通MATLAB最优化计算/第8章 约束优化问题/minMixFun.m
function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps) gx0 = Funval(g,var,x0); if gx0 >= 0 ; else disp('初始点必须满足不等式约束!'); x = NaN; minf = NaN; return; end if r0 <= 0 disp('初始障碍因子必须大于0!'); x = NaN; minf = NaN; return; end if c >= 1 || c < 0 disp('缩小系数必须大于0且小于1!'); x = NaN; minf = NaN; return; end if nargin == 7 eps = 1.0e-6; end FE = 0; for i=1:length(g) FE = FE + 1/g(i); end FH = transpose(h)*h; x1 = transpose(x0); x2 = inf; while 1 FF = r0*FE + FH/sqrt(r0); SumF = f + FF ; [x2,minf] = minNT(SumF,transpose(x1),var); if norm(x2 - x1)<=eps x = x2; break; else r0 = c*r0; x1 = x2; end end minf = Funval(f,var,x);